how to solve optimization